/**
 * *******************************************************************************
 *  Copyright (c) 2008 - 2017 Profactor GmbH, TU Wien ACIN, fortiss GmbH
 * 
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * SPDX-License-Identifier: EPL-2.0
 * 
 * Contributors:
 *    Gerhard Ebenhofer, Alois Zoitl, Ingo Hegny, Monika Wenger, Martin Jobst
 *      - initial API and implementation and/or initial documentation
 * *******************************************************************************
 */
package org.eclipse.fordiac.ide.model.libraryElement.provider;

import java.util.ArrayList;
import java.util.Collection;

import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.Notifier;
import org.eclipse.emf.edit.provider.ChangeNotifier;
import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
import org.eclipse.emf.edit.provider.Disposable;
import org.eclipse.emf.edit.provider.IChangeNotifier;
import org.eclipse.emf.edit.provider.IDisposable;
import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
import org.eclipse.emf.edit.provider.IItemLabelProvider;
import org.eclipse.emf.edit.provider.IItemPropertySource;
import org.eclipse.emf.edit.provider.INotifyChangedListener;
import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
import org.eclipse.fordiac.ide.model.libraryElement.util.LibraryElementAdapterFactory;

/**
 * This is the factory that is used to provide the interfaces needed to support
 * Viewers. The adapters generated by this factory convert EMF adapter
 * notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}. The
 * adapters also support Eclipse property sheets. Note that most of the adapters
 * are shared among multiple instances. <!-- begin-user-doc --> <!--
 * end-user-doc -->
 * 
 * @generated
 */
public class LibraryElementItemProviderAdapterFactory extends LibraryElementAdapterFactory
		implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
	/**
	 * This keeps track of the root adapter factory that delegates to this adapter
	 * factory. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected ComposedAdapterFactory parentAdapterFactory;

	/**
	 * This is used to implement
	 * {@link org.eclipse.emf.edit.provider.IChangeNotifier}. <!-- begin-user-doc
	 * --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected IChangeNotifier changeNotifier = new ChangeNotifier();

	/**
	 * This keeps track of all the item providers created, so that they can be
	 * {@link #dispose disposed}. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected Disposable disposable = new Disposable();

	/**
	 * This keeps track of all the supported types checked by
	 * {@link #isFactoryForType isFactoryForType}. <!-- begin-user-doc --> <!--
	 * end-user-doc -->
	 * 
	 * @generated
	 */
	protected Collection<Object> supportedTypes = new ArrayList<Object>();

	/**
	 * This constructs an instance. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	public LibraryElementItemProviderAdapterFactory() {
		supportedTypes.add(IEditingDomainItemProvider.class);
		supportedTypes.add(IStructuredItemContentProvider.class);
		supportedTypes.add(ITreeItemContentProvider.class);
		supportedTypes.add(IItemLabelProvider.class);
		supportedTypes.add(IItemPropertySource.class);
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.AdapterDeclaration}
	 * instances. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected AdapterDeclarationItemProvider adapterDeclarationItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.AdapterDeclaration}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createAdapterDeclarationAdapter() {
		if (adapterDeclarationItemProvider == null) {
			adapterDeclarationItemProvider = new AdapterDeclarationItemProvider(this);
		}

		return adapterDeclarationItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.AdapterType} instances.
	 * <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected AdapterTypeItemProvider adapterTypeItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.AdapterType}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createAdapterTypeAdapter() {
		if (adapterTypeItemProvider == null) {
			adapterTypeItemProvider = new AdapterTypeItemProvider(this);
		}

		return adapterTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Application} instances.
	 * <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected ApplicationItemProvider applicationItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Application}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createApplicationAdapter() {
		if (applicationItemProvider == null) {
			applicationItemProvider = new ApplicationItemProvider(this);
		}

		return applicationItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.BasicFBType} instances.
	 * <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected BasicFBTypeItemProvider basicFBTypeItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.BasicFBType}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createBasicFBTypeAdapter() {
		if (basicFBTypeItemProvider == null) {
			basicFBTypeItemProvider = new BasicFBTypeItemProvider(this);
		}

		return basicFBTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.CompilerInfo} instances.
	 * <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected CompilerInfoItemProvider compilerInfoItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.CompilerInfo}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createCompilerInfoAdapter() {
		if (compilerInfoItemProvider == null) {
			compilerInfoItemProvider = new CompilerInfoItemProvider(this);
		}

		return compilerInfoItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Compiler} instances. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected CompilerItemProvider compilerItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Compiler}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createCompilerAdapter() {
		if (compilerItemProvider == null) {
			compilerItemProvider = new CompilerItemProvider(this);
		}

		return compilerItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Device} instances. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected DeviceItemProvider deviceItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Device}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createDeviceAdapter() {
		if (deviceItemProvider == null) {
			deviceItemProvider = new DeviceItemProvider(this);
		}

		return deviceItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.DeviceType} instances.
	 * <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected DeviceTypeItemProvider deviceTypeItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.DeviceType}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createDeviceTypeAdapter() {
		if (deviceTypeItemProvider == null) {
			deviceTypeItemProvider = new DeviceTypeItemProvider(this);
		}

		return deviceTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.ECAction} instances. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected ECActionItemProvider ecActionItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.ECAction}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createECActionAdapter() {
		if (ecActionItemProvider == null) {
			ecActionItemProvider = new ECActionItemProvider(this);
		}

		return ecActionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.ECC} instances. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected ECCItemProvider eccItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.ECC}. <!-- begin-user-doc
	 * --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createECCAdapter() {
		if (eccItemProvider == null) {
			eccItemProvider = new ECCItemProvider(this);
		}

		return eccItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.ECState} instances. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected ECStateItemProvider ecStateItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.ECState}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createECStateAdapter() {
		if (ecStateItemProvider == null) {
			ecStateItemProvider = new ECStateItemProvider(this);
		}

		return ecStateItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.ECTransition} instances.
	 * <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected ECTransitionItemProvider ecTransitionItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.ECTransition}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createECTransitionAdapter() {
		if (ecTransitionItemProvider == null) {
			ecTransitionItemProvider = new ECTransitionItemProvider(this);
		}

		return ecTransitionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Event} instances. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected EventItemProvider eventItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Event}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createEventAdapter() {
		if (eventItemProvider == null) {
			eventItemProvider = new EventItemProvider(this);
		}

		return eventItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.FB} instances. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected FBItemProvider fbItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.FB}. <!-- begin-user-doc
	 * --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createFBAdapter() {
		if (fbItemProvider == null) {
			fbItemProvider = new FBItemProvider(this);
		}

		return fbItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.FBNetworkElement}
	 * instances. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected FBNetworkElementItemProvider fbNetworkElementItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.FBNetworkElement}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createFBNetworkElementAdapter() {
		if (fbNetworkElementItemProvider == null) {
			fbNetworkElementItemProvider = new FBNetworkElementItemProvider(this);
		}

		return fbNetworkElementItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.SubApp} instances. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected SubAppItemProvider subAppItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.SubApp}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createSubAppAdapter() {
		if (subAppItemProvider == null) {
			subAppItemProvider = new SubAppItemProvider(this);
		}

		return subAppItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.FBType} instances. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected FBTypeItemProvider fbTypeItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.FBType}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createFBTypeAdapter() {
		if (fbTypeItemProvider == null) {
			fbTypeItemProvider = new FBTypeItemProvider(this);
		}

		return fbTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Identification}
	 * instances. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected IdentificationItemProvider identificationItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Identification}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createIdentificationAdapter() {
		if (identificationItemProvider == null) {
			identificationItemProvider = new IdentificationItemProvider(this);
		}

		return identificationItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.InputPrimitive}
	 * instances. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected InputPrimitiveItemProvider inputPrimitiveItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.InputPrimitive}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createInputPrimitiveAdapter() {
		if (inputPrimitiveItemProvider == null) {
			inputPrimitiveItemProvider = new InputPrimitiveItemProvider(this);
		}

		return inputPrimitiveItemProvider;
	}

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.InterfaceList}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createInterfaceListAdapter() {
		return new InterfaceListItemProvider(this);
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Link} instances. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected LinkItemProvider linkItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Link}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createLinkAdapter() {
		if (linkItemProvider == null) {
			linkItemProvider = new LinkItemProvider(this);
		}

		return linkItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Mapping} instances. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected MappingItemProvider mappingItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Mapping}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createMappingAdapter() {
		if (mappingItemProvider == null) {
			mappingItemProvider = new MappingItemProvider(this);
		}

		return mappingItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.OtherAlgorithm}
	 * instances. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected OtherAlgorithmItemProvider otherAlgorithmItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.OtherAlgorithm}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createOtherAlgorithmAdapter() {
		if (otherAlgorithmItemProvider == null) {
			otherAlgorithmItemProvider = new OtherAlgorithmItemProvider(this);
		}

		return otherAlgorithmItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.OutputPrimitive}
	 * instances. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected OutputPrimitiveItemProvider outputPrimitiveItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.OutputPrimitive}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createOutputPrimitiveAdapter() {
		if (outputPrimitiveItemProvider == null) {
			outputPrimitiveItemProvider = new OutputPrimitiveItemProvider(this);
		}

		return outputPrimitiveItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Attribute} instances.
	 * <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected AttributeItemProvider attributeItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Attribute}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createAttributeAdapter() {
		if (attributeItemProvider == null) {
			attributeItemProvider = new AttributeItemProvider(this);
		}

		return attributeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Resource} instances. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected ResourceItemProvider resourceItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Resource}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createResourceAdapter() {
		if (resourceItemProvider == null) {
			resourceItemProvider = new ResourceItemProvider(this);
		}

		return resourceItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.ResourceTypeName}
	 * instances. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected ResourceTypeNameItemProvider resourceTypeNameItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.ResourceTypeName}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createResourceTypeNameAdapter() {
		if (resourceTypeNameItemProvider == null) {
			resourceTypeNameItemProvider = new ResourceTypeNameItemProvider(this);
		}

		return resourceTypeNameItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.ResourceType} instances.
	 * <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected ResourceTypeItemProvider resourceTypeItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.ResourceType}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createResourceTypeAdapter() {
		if (resourceTypeItemProvider == null) {
			resourceTypeItemProvider = new ResourceTypeItemProvider(this);
		}

		return resourceTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Segment} instances. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected SegmentItemProvider segmentItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Segment}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createSegmentAdapter() {
		if (segmentItemProvider == null) {
			segmentItemProvider = new SegmentItemProvider(this);
		}

		return segmentItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.ServiceSequence}
	 * instances. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected ServiceSequenceItemProvider serviceSequenceItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.ServiceSequence}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createServiceSequenceAdapter() {
		if (serviceSequenceItemProvider == null) {
			serviceSequenceItemProvider = new ServiceSequenceItemProvider(this);
		}

		return serviceSequenceItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.ServiceTransaction}
	 * instances. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected ServiceTransactionItemProvider serviceTransactionItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.ServiceTransaction}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createServiceTransactionAdapter() {
		if (serviceTransactionItemProvider == null) {
			serviceTransactionItemProvider = new ServiceTransactionItemProvider(this);
		}

		return serviceTransactionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.ServiceInterfaceFBType}
	 * instances. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected ServiceInterfaceFBTypeItemProvider serviceInterfaceFBTypeItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.ServiceInterfaceFBType}.
	 * <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createServiceInterfaceFBTypeAdapter() {
		if (serviceInterfaceFBTypeItemProvider == null) {
			serviceInterfaceFBTypeItemProvider = new ServiceInterfaceFBTypeItemProvider(this);
		}

		return serviceInterfaceFBTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.STAlgorithm} instances.
	 * <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected STAlgorithmItemProvider stAlgorithmItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.STAlgorithm}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createSTAlgorithmAdapter() {
		if (stAlgorithmItemProvider == null) {
			stAlgorithmItemProvider = new STAlgorithmItemProvider(this);
		}

		return stAlgorithmItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.FBNetwork} instances.
	 * <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected FBNetworkItemProvider fbNetworkItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.FBNetwork}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createFBNetworkAdapter() {
		if (fbNetworkItemProvider == null) {
			fbNetworkItemProvider = new FBNetworkItemProvider(this);
		}

		return fbNetworkItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.SubAppType} instances.
	 * <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected SubAppTypeItemProvider subAppTypeItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.SubAppType}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createSubAppTypeAdapter() {
		if (subAppTypeItemProvider == null) {
			subAppTypeItemProvider = new SubAppTypeItemProvider(this);
		}

		return subAppTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.AutomationSystem}
	 * instances. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected AutomationSystemItemProvider automationSystemItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.AutomationSystem}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createAutomationSystemAdapter() {
		if (automationSystemItemProvider == null) {
			automationSystemItemProvider = new AutomationSystemItemProvider(this);
		}

		return automationSystemItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration}
	 * instances. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected VarDeclarationItemProvider varDeclarationItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createVarDeclarationAdapter() {
		if (varDeclarationItemProvider == null) {
			varDeclarationItemProvider = new VarDeclarationItemProvider(this);
		}

		return varDeclarationItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.VersionInfo} instances.
	 * <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected VersionInfoItemProvider versionInfoItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.VersionInfo}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createVersionInfoAdapter() {
		if (versionInfoItemProvider == null) {
			versionInfoItemProvider = new VersionInfoItemProvider(this);
		}

		return versionInfoItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.With} instances. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected WithItemProvider withItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.With}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createWithAdapter() {
		if (withItemProvider == null) {
			withItemProvider = new WithItemProvider(this);
		}

		return withItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.LibraryElement}
	 * instances. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected LibraryElementItemProvider libraryElementItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.LibraryElement}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createLibraryElementAdapter() {
		if (libraryElementItemProvider == null) {
			libraryElementItemProvider = new LibraryElementItemProvider(this);
		}

		return libraryElementItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.CompilableType}
	 * instances. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected CompilableTypeItemProvider compilableTypeItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.CompilableType}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createCompilableTypeAdapter() {
		if (compilableTypeItemProvider == null) {
			compilableTypeItemProvider = new CompilableTypeItemProvider(this);
		}

		return compilableTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.ConfigurableObject}
	 * instances. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected ConfigurableObjectItemProvider configurableObjectItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.ConfigurableObject}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createConfigurableObjectAdapter() {
		if (configurableObjectItemProvider == null) {
			configurableObjectItemProvider = new ConfigurableObjectItemProvider(this);
		}

		return configurableObjectItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.CompositeFBType}
	 * instances. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected CompositeFBTypeItemProvider compositeFBTypeItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.CompositeFBType}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createCompositeFBTypeAdapter() {
		if (compositeFBTypeItemProvider == null) {
			compositeFBTypeItemProvider = new CompositeFBTypeItemProvider(this);
		}

		return compositeFBTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.DataConnection}
	 * instances. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected DataConnectionItemProvider dataConnectionItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.DataConnection}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createDataConnectionAdapter() {
		if (dataConnectionItemProvider == null) {
			dataConnectionItemProvider = new DataConnectionItemProvider(this);
		}

		return dataConnectionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.EventConnection}
	 * instances. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected EventConnectionItemProvider eventConnectionItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.EventConnection}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createEventConnectionAdapter() {
		if (eventConnectionItemProvider == null) {
			eventConnectionItemProvider = new EventConnectionItemProvider(this);
		}

		return eventConnectionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.AdapterConnection}
	 * instances. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected AdapterConnectionItemProvider adapterConnectionItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.AdapterConnection}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createAdapterConnectionAdapter() {
		if (adapterConnectionItemProvider == null) {
			adapterConnectionItemProvider = new AdapterConnectionItemProvider(this);
		}

		return adapterConnectionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.ServiceInterface}
	 * instances. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected ServiceInterfaceItemProvider serviceInterfaceItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.ServiceInterface}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createServiceInterfaceAdapter() {
		if (serviceInterfaceItemProvider == null) {
			serviceInterfaceItemProvider = new ServiceInterfaceItemProvider(this);
		}

		return serviceInterfaceItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Value} instances. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected ValueItemProvider valueItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Value}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createValueAdapter() {
		if (valueItemProvider == null) {
			valueItemProvider = new ValueItemProvider(this);
		}

		return valueItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.SystemConfiguration}
	 * instances. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected SystemConfigurationItemProvider systemConfigurationItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.SystemConfiguration}.
	 * <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createSystemConfigurationAdapter() {
		if (systemConfigurationItemProvider == null) {
			systemConfigurationItemProvider = new SystemConfigurationItemProvider(this);
		}

		return systemConfigurationItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.ResourceTypeFB}
	 * instances. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected ResourceTypeFBItemProvider resourceTypeFBItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.ResourceTypeFB}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createResourceTypeFBAdapter() {
		if (resourceTypeFBItemProvider == null) {
			resourceTypeFBItemProvider = new ResourceTypeFBItemProvider(this);
		}

		return resourceTypeFBItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.SegmentType} instances.
	 * <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected SegmentTypeItemProvider segmentTypeItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.SegmentType}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createSegmentTypeAdapter() {
		if (segmentTypeItemProvider == null) {
			segmentTypeItemProvider = new SegmentTypeItemProvider(this);
		}

		return segmentTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.AdapterFBType} instances.
	 * <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected AdapterFBTypeItemProvider adapterFBTypeItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.AdapterFBType}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createAdapterFBTypeAdapter() {
		if (adapterFBTypeItemProvider == null) {
			adapterFBTypeItemProvider = new AdapterFBTypeItemProvider(this);
		}

		return adapterFBTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.AdapterEvent} instances.
	 * <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected AdapterEventItemProvider adapterEventItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.AdapterEvent}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createAdapterEventAdapter() {
		if (adapterEventItemProvider == null) {
			adapterEventItemProvider = new AdapterEventItemProvider(this);
		}

		return adapterEventItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Service} instances. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected ServiceItemProvider serviceItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Service}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createServiceAdapter() {
		if (serviceItemProvider == null) {
			serviceItemProvider = new ServiceItemProvider(this);
		}

		return serviceItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.TypedConfigureableObject}
	 * instances. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected TypedConfigureableObjectItemProvider typedConfigureableObjectItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.TypedConfigureableObject}.
	 * <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createTypedConfigureableObjectAdapter() {
		if (typedConfigureableObjectItemProvider == null) {
			typedConfigureableObjectItemProvider = new TypedConfigureableObjectItemProvider(this);
		}

		return typedConfigureableObjectItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.AdapterFB} instances.
	 * <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected AdapterFBItemProvider adapterFBItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.AdapterFB}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createAdapterFBAdapter() {
		if (adapterFBItemProvider == null) {
			adapterFBItemProvider = new AdapterFBItemProvider(this);
		}

		return adapterFBItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Primitive} instances.
	 * <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected PrimitiveItemProvider primitiveItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Primitive}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createPrimitiveAdapter() {
		if (primitiveItemProvider == null) {
			primitiveItemProvider = new PrimitiveItemProvider(this);
		}

		return primitiveItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.PositionableElement}
	 * instances. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected PositionableElementItemProvider positionableElementItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.PositionableElement}.
	 * <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createPositionableElementAdapter() {
		if (positionableElementItemProvider == null) {
			positionableElementItemProvider = new PositionableElementItemProvider(this);
		}

		return positionableElementItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Color} instances. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected ColorItemProvider colorItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Color}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createColorAdapter() {
		if (colorItemProvider == null) {
			colorItemProvider = new ColorItemProvider(this);
		}

		return colorItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.ColorizableElement}
	 * instances. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected ColorizableElementItemProvider colorizableElementItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.ColorizableElement}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createColorizableElementAdapter() {
		if (colorizableElementItemProvider == null) {
			colorizableElementItemProvider = new ColorizableElementItemProvider(this);
		}

		return colorizableElementItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.AttributeDeclaration}
	 * instances. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected AttributeDeclarationItemProvider attributeDeclarationItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.AttributeDeclaration}.
	 * <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createAttributeDeclarationAdapter() {
		if (attributeDeclarationItemProvider == null) {
			attributeDeclarationItemProvider = new AttributeDeclarationItemProvider(this);
		}

		return attributeDeclarationItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.SimpleFBType} instances.
	 * <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected SimpleFBTypeItemProvider simpleFBTypeItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.SimpleFBType}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createSimpleFBTypeAdapter() {
		if (simpleFBTypeItemProvider == null) {
			simpleFBTypeItemProvider = new SimpleFBTypeItemProvider(this);
		}

		return simpleFBTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.BaseFBType} instances.
	 * <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected BaseFBTypeItemProvider baseFBTypeItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.BaseFBType}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createBaseFBTypeAdapter() {
		if (baseFBTypeItemProvider == null) {
			baseFBTypeItemProvider = new BaseFBTypeItemProvider(this);
		}

		return baseFBTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Demultiplexer} instances.
	 * <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected DemultiplexerItemProvider demultiplexerItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Demultiplexer}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createDemultiplexerAdapter() {
		if (demultiplexerItemProvider == null) {
			demultiplexerItemProvider = new DemultiplexerItemProvider(this);
		}

		return demultiplexerItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Multiplexer} instances.
	 * <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected MultiplexerItemProvider multiplexerItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.Multiplexer}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createMultiplexerAdapter() {
		if (multiplexerItemProvider == null) {
			multiplexerItemProvider = new MultiplexerItemProvider(this);
		}

		return multiplexerItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.LocalVariable} instances.
	 * <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	protected LocalVariableItemProvider localVariableItemProvider;

	/**
	 * This creates an adapter for a
	 * {@link org.eclipse.fordiac.ide.model.libraryElement.LocalVariable}. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter createLocalVariableAdapter() {
		if (localVariableItemProvider == null) {
			localVariableItemProvider = new LocalVariableItemProvider(this);
		}

		return localVariableItemProvider;
	}

	/**
	 * This returns the root adapter factory that contains this factory. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public ComposeableAdapterFactory getRootAdapterFactory() {
		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
	}

	/**
	 * This sets the composed adapter factory that contains this factory. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
		this.parentAdapterFactory = parentAdapterFactory;
	}

	/**
	 * <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public boolean isFactoryForType(Object type) {
		return supportedTypes.contains(type) || super.isFactoryForType(type);
	}

	/**
	 * This implementation substitutes the factory itself as the key for the
	 * adapter. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Adapter adapt(Notifier notifier, Object type) {
		return super.adapt(notifier, this);
	}

	/**
	 * <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public Object adapt(Object object, Object type) {
		if (isFactoryForType(type)) {
			Object adapter = super.adapt(object, type);
			if (!(type instanceof Class<?>) || (((Class<?>) type).isInstance(adapter))) {
				return adapter;
			}
		}

		return null;
	}

	/**
	 * Associates an adapter with a notifier via the base implementation, then
	 * records it to ensure it will be disposed. <!-- begin-user-doc --> <!--
	 * end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	protected void associate(Adapter adapter, Notifier target) {
		super.associate(adapter, target);
		if (adapter != null) {
			disposable.add(adapter);
		}
	}

	/**
	 * This adds a listener. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public void addListener(INotifyChangedListener notifyChangedListener) {
		changeNotifier.addListener(notifyChangedListener);
	}

	/**
	 * This removes a listener. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public void removeListener(INotifyChangedListener notifyChangedListener) {
		changeNotifier.removeListener(notifyChangedListener);
	}

	/**
	 * This delegates to {@link #changeNotifier} and to
	 * {@link #parentAdapterFactory}. <!-- begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public void fireNotifyChanged(Notification notification) {
		changeNotifier.fireNotifyChanged(notification);

		if (parentAdapterFactory != null) {
			parentAdapterFactory.fireNotifyChanged(notification);
		}
	}

	/**
	 * This disposes all of the item providers created by this factory. <!--
	 * begin-user-doc --> <!-- end-user-doc -->
	 * 
	 * @generated
	 */
	@Override
	public void dispose() {
		disposable.dispose();
	}

}
